package br.com.cicero.notasfiscais.mb;

import java.io.Serializable;

import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;
import org.jboss.seam.international.status.Messages;

import br.com.cicero.notasfiscais.dao.UsuarioDAO;
import br.com.cicero.notasfiscais.modelo.Usuario;
import br.com.cicero.notasfiscais.stereotypes.Model;

@Model
public class LoginBean implements Serializable {
	
	@Inject
	private Logger logger;
	
	@Inject
	private Messages messages;
	private Usuario usuario = new Usuario();
	
	@Inject
	private UsuarioLogado usuarioLogado;
	
	@Inject
	private UsuarioDAO dao;
		
	public String efetuaLogin() {
		logger.info("Efetuando login de usuário");
		
		boolean loginValido = dao.existe(this.usuario);
		
		if (loginValido) {
			usuarioLogado.setUsuario(usuario);
			return "produto?faces-redirect=true";
		} else {
			usuarioLogado.setUsuario(null);
			messages.info("O usuário {0} e senha não são válidos", this.usuario.getLogin());
			return "login?faces-redirect=true";
		}
			
	}
	
	public String logout() {
		FacesContext context = FacesContext.getCurrentInstance();
		HttpSession session = (HttpSession) context.getExternalContext().getSession(true);
		session.invalidate();
		
		return "login?faces-redirect=true";
	}
	
	public Usuario getUsuario() {
		return usuario;
	}
	
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	
	public boolean isLogado() {
		return usuarioLogado.isLogado();
	}
	
}
